package model

import (
	"github.com/starmotioncf/soutchatinternal/constant"
	"github.com/starmotioncf/soutchatpkg/sms"
)

// SmsCaptcha SMS验证码模型结构定义
// 对应数据库表`sms_captcha`
type SmsCaptcha struct {
	Id          int64                     `gorm:"column:id;primaryKey;autoIncrement;type:int(20) unsigned" json:"id"`         // ID主键
	Stype       constant.SMSCaptchaType   `gorm:"column:stype;not null;default:1;type:tinyint(3) unsigned;" json:"stype"`     // 使用场景类型(１-注册２登录３修改密码)
	Area        int                       `gorm:"column:area;not null;default:0" json:"area"`                                 // 电话区号
	PhoneNumber string                    `gorm:"column:phone_number;not null;size:20;index:idx_mp" json:"phone_number"`      // 电话号码
	CodeId      string                    `gorm:"column:code_id;not null;size:50;index:idx_code_id" json:"code_id"`           // 验证码ID
	Code        string                    `gorm:"column:code;not null;size:10" json:"code"`                                   // 验证码内容
	Mac         string                    `gorm:"column:mac;not null;default:'';size:100" json:"mac"`                         // 发送设备MAC地址
	Ip          string                    `gorm:"column.ip;not null;default:'',size:10０" json:"ip"`                           // 发送IP地址
	CountryCode string                    `gorm:"column.country_code;type:char(2);not null;default:'" json:"country_code"`    // ISO国家代码
	SmsProvider sms.SMSProvider           `gorm:"column.sms_provider;not null;default:0;type:tinyint(4)" json:"sms_provider"` // 短信服务商(0不启用短信 1腾讯云 2梦网)
	Status      constant.SmsCaptchaStatus `gorm:"column.status;not null;default:1;type:tinyint(4)" json:"status"`             // 状态(1发送成功2发送失败3已校验)
	ErrMsg      string                    `gorm:"column.err_msg;not null;default:'';size:500" json:"err_msg"`                 // 发送错误信息
	VerifyAt    int64                     `gorm:"column.verify_at;not null;default:0" json:"verify_at"`                       // 校验时间戳
	CreatedAt   int64                     `gorm:"column.created_at;not null;default:0" json:"created_at"`                     // 创建时间戳
}

// TableName 设置表名映射关系
func (SmsCaptcha) TableName() string {
	return "sms_captcha"
}
